1. Field of the Invention
The invention disclosed and claimed herein generally pertains to a method and related apparatus for data transfer between multiple root nodes and PCI adapters, through an input/output (I/O) switched-fabric bus. More particularly, the invention pertains to a method of the above type wherein different root nodes may be routed through the I/O fabric to share the same adapter, and a single control, used to configure the routing for all root nodes, resides in one of the nodes. Even more particularly, the invention pertains to a method of the above type wherein a challenge procedure is provided, to resolve any uncertainty as to which node is serving as the control node.
2. Description of the Related Art
As is well known by those of skill in the art, PCI Express (PCI-E) is widely used in computer systems to interconnect host units to adapters or other components, by means of an I/O switched-fabric bus or the like. However, PCI-E currently does not permit sharing of PCI adapters in topologies where there are multiple hosts with multiple shared PCI buses. As a result, even though such sharing capability could be very valuable when using blade clusters or other clustered servers, adapters for PCI-E and secondary networks (e.g., FC, IB, Enet) are at present generally integrated into individual blades and server systems. Thus, such adapters cannot be shared between clustered blades, or even between multiple roots within a clustered system.
In an environment containing multiple blades or blade clusters, it can be very costly to dedicate a PCI adapter for use with only a single blade. For example, a 10 Gigabit Ethernet (10 GigE) adapter currently costs on the order of $6,000. The inability to share these expensive adapters between blades has, in fact, contributed to the slow adoption rate of certain new network technologies such as 10 GigE. Moreover, there is a constraint imposed by the limited space available in blades to accommodate PCI adapters. This problem of limited space could be overcome if a PC network was able to support attachment of multiple hosts to a single PCI adapter, so that virtual PCI I/O adapters could be shared between the multiple hosts.
In a distributed computer system comprising a multi-host environment or the like, the configuration of any portion of an I/O fabric that is shared between hosts, or other root nodes, cannot be controlled by multiple hosts. This is because one host might make changes that affect another host. Accordingly, to achieve the above goal of sharing a PCI adapter amongst different hosts, it is necessary to provide a central management mechanism of some type. This management mechanism is needed to configure the routings used by PCI switches of the I/O fabric, as well as by the root complexes, PCI adapters and other devices interconnected by the PCI switches.
It is to be understood that the term “root node” is used herein to generically describe an entity that may comprise a computer host CPU set or the like, and a root complex connected thereto. The host set could have one or multiple discrete CPU's. However, the term “root node” is not necessarily limited to host CPU sets. The term “root complex” is used herein to generically describe structure in a root node for connecting the root node and its host CPU set to the I/O fabric.
In one very useful approach, a particular designated root node includes a component which is the PCI Configuration Master (PCM) for the entire multi-host system. The PCM configures all routings through the I/O fabric, for all PCI switches, root complexes and adapters. However, in a PCI switched-fabric, multiple fabric managers are allowed. Moreover, any fabric manager can plug into any root switch port, that is, the port of a PCI switch that is directly connected to a root complex. As a result, when a PCM of the above type is engaged in configuring a route through a PCI fabric, it will sometimes encounter a switch that appears to be controlled by a fabric manager other than the PCM, residing at a root node other than the designated node. Accordingly, it is necessary to provide a challenge procedure, to determine or affirm which root node actually contains the controlling fabric configuration manager.